// // 设 C = {a1，b1，a2，b2，…，an，bn}为线性表，采用头结点的 hc 单链表存放，
// // 设计一个就地算法，将其拆分为两个单链表，使得 A = {a1，a2，…，an}，B = {bn，…，b2，b1}。
// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
// //节点结构
// typedef struct LinkNode {
//     int data;
//     struct LinkNode* next;
// }LinkNode;
// //链表结构
// typedef struct LinkList {
//     LinkNode* head;
// }LinkList;
// //链表初始化
// LinkList* LinkInit() {
//     LinkList* list=(LinkList*)malloc(sizeof(LinkList));
//     list->head=(LinkNode*)malloc(sizeof(LinkNode));
//     list->head->next=NULL;
//     return list;
// }
//
// // 插入节点到链表尾部
// void LinkInsert(LinkList* list,int data) {
//     LinkNode* newNode=(LinkNode*)malloc(sizeof(LinkNode));
//     if(newNode==NULL) {
//         perror("malloc");
//     }
//     newNode->data=data;
//     newNode->next=NULL;
//     LinkNode* current=list->head;
//     while (current->next!=NULL) {
//         current=current->next;
//     }
//     current->next=newNode;
// }
// //头插法
// void LinkHeadInsert(LinkList* list,int data) {
//     LinkNode* newNode=malloc(sizeof(LinkNode));
//     if(newNode==NULL) {
//         perror("malloc");
//     }
//     newNode->data=data;
//     newNode->next=list->head->next;
//     list->head->next=newNode;
// }
//
// //打印链表
// void printLinkList(LinkList* list) {
//     LinkNode* current=list->head->next;
//     while(current!=NULL) {
//         printf("%d ",current->data);
//         current=current->next;
//     }
//     printf("\n");
// }
//
// void ChaiFen(LinkList* C,LinkList* A,LinkList* B) {
//     A->head->next=NULL;
//     B->head->next=NULL;
//     LinkNode* c=C->head->next;
//     LinkNode* a=A->head;
//     LinkNode* b=B->head;
//     int i=1;
//     while (c!=NULL) {
//         if(i%2!=0) {
//             LinkNode* tmp=c;
//             c=c->next;
//             a->next=tmp;
//             a=a->next;
//         }else {
//             LinkNode* tmp=c;
//             c=c->next;
//             b->next=tmp;
//             b=b->next;
//         }
//         i++;
//     }
//     a->next=NULL;
//     b->next=NULL;
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     LinkList* L = LinkInit();
//     LinkList* A = LinkInit();
//     LinkList* B = LinkInit();
//
//     // 插入数据到链表L
//     LinkInsert(L, 1);
//     LinkInsert(L, 2);
//     LinkInsert(L, 3);
//     LinkInsert(L, 4);
//     LinkInsert(L, 5);
//     LinkInsert(L, 6);
//
//     printf("原始链表L: ");
//     printLinkList(L);
//
//     // 分解链表
//     ChaiFen(L, A, B);
//
//     printf("分解后的链表A（奇数序号）: ");
//     printLinkList(A);
//
//     printf("分解后的链表B（偶数序号）: ");
//     printLinkList(B);
//
//     // 释放链表内存
//     LinkNode* current;
//     while (A->head != NULL) {
//         current = A->head;
//         A->head = A->head->next;
//         free(current);
//     }
//     free(A);
//
//     while (B->head != NULL) {
//         current = B->head;
//         B->head = B->head->next;
//         free(current);
//     }
//     free(B);
//     return 0;
// }